Kaggle新福利:如何用Kaggle Kernels免费使用GPU

您所在的位置:网站首页 kaggle gpu付费 Kaggle新福利:如何用Kaggle Kernels免费使用GPU

Kaggle新福利:如何用Kaggle Kernels免费使用GPU

2023-04-23 03:00| 来源: 网络整理| 查看: 265

前段时间我们分享了怎么免费用谷歌的 GPU 训练机器学习模型,详情戳这里。

这次我们又有了新的薅羊毛机会:通过 Kaggle Kernels 免费使用英伟达 GPU!

什么是 Kaggle Kernels?

可能有些朋友不是很熟悉 Kaggle Kernels,但 Kaggle 应该知道,至少搞数据科学和机器学习的会听说过 Kaggle 挑战赛。Kaggle 是一个用来从事数据科学研究或分享数据科学知识的平台从 Kaggle 上我们不仅能练习数据科学,还能从 Kaggle 社区中学到很多知识。

而 Kaggle 的产品 Kaggle Kernels 相当于一个内置于浏览器的 Jupyter Notebooks,一切运行都在你眼前呈现,由你自由支配。一句话:Kaggle Kernels 就是一个能在浏览器中运行 Jupyter Notebooks 的免费平台。

也就是说,只要有网络有浏览器,你随时随地都能在你的浏览器上拥有 Jupyter Notebook 环境,不用再自己设置本地环境。

由于 Kaggle Kernels 的处理能力来自云端服务器,而不是本地机器,所以我们能在不怎么消耗笔记本电量的情况下,在上面完成很多数据科学和机器学习工作。

在 Kaggle 上注册一个账户后,就可以选择一个自己想要使用的数据集,点击几下就能启动一个新的 Kernel,也就是 Notebook。

我们用的数据集都预先加载到了该 Kernel 上,所以把数据集导入机器、再等待数据集输入模型中这样一套耗时的流程,我们就不用再做了。

具体如何使用 Kaggle Kernels,可以参考这篇教程。

最近 Kaggle 又推出了一个大福利:用户通过 Kaggle Kernels 可以免费使用 NVidia K80 GPU !

经过 Kaggle 测试后显示,使用 GPU 后能让你训练深度学习模型的速度提高 12.5 倍。

以使用 ASL Alphabet 数据集训练模型为例,在 Kaggle Kernels 上用 GPU 的总训练时间为 994 秒,而此前用 CPU 的总训练时间达 13,419 秒。直接让你训练模型的时间缩短为原来的 12 分之一。 当然在自己实际使用中,模型训练时间缩短多长会涉及多个因素,比如模型架构、批次大小、输入流水线的复杂程度等等。不管怎么说,我们现在可以通过 Kaggle Kernels 免费使用 GPU 了!

如何在 Kaggle Kernels 上使用 GPU

Kaggle 官网上分享了怎样能在 Kaggle Kernels 上使用 GPU,并展示了示例代码:

添加 GPU

我们首先打开 Kernel 控制界面,为当前的 Kernel 设置运行一个 GPU。

选择“Setting”选项,然后选择“Enable GPU”。接着在控制栏上检查你的 Kernel 是否连上了 GPU,连接状态应显示为“GPU ON”,如下图所示:

不少数据科学库并不能使用 GPU,因此对于一些任务来说(特别是使用 TensorFlow、Keras和 PyTorch 这些深度学习库的时候),GPU 会非常有价值。

数据

我们用到的数据集包含了涉及 29 种美式手语的图像,这些手语用来指代 26 个英语字母以及空格、删除、无物的意思等等。我们的模型会查看这些图像,学习分类每张图像上的手语。

# 导入深度学习所需的库和数据 from keras.layers import Conv2D, Dense, Dropout, Flatten from keras.models import Sequential from keras.preprocessing.image import ImageDataGenerator # 保证运行中的连续性 from numpy.random import seed seed(1) from tensorflow import set_random_seed set_random_seed(2) # 导入以查看数据 import cv2 from glob import glob from matplotlib import pyplot as plt from numpy import floor import random def plot_three_samples(letter): print("Samples images for letter " + letter) base_path = '../input/asl_alphabet_train/asl_alphabet_train/' img_path = base_path + letter + '/**' path_contents = glob(img_path) plt.figure(figsize=(16,16)) imgs = random.sample(path_contents, 3) plt.subplot(131) plt.imshow(cv2.imread(imgs[0])) plt.subplot(132) plt.imshow(cv2.imread(imgs[1])) plt.subplot(133) plt.imshow(cv2.imread(imgs[2])) return plot_three_samples('A') plot_three_samples('B') 复制代码

对应字母“B”的图像样本:

数据处理设定

data_dir = "../input/asl_alphabet_train/asl_alphabet_train" target_size = (64, 64) target_dims = (64, 64, 3) # add channel for RGB n_classes = 29 val_frac = 0.1 batch_size = 64 data_augmentor = ImageDataGenerator(samplewise_center=True, samplewise_std_normalization=True, validation_split=val_frac) train_generator = data_augmentor.flow_from_directory(data_dir, target_size=target_size, batch_size=batch_size, shuffle=True, subset="training") val_generator = data_augmentor.flow_from_directory(data_dir, target_size=target_size, batch_size=ba 复制代码

发现属于 29 种类别的 78300 张图像

发现属于 29 种类别的 8700 张图像

模型设定

my_model = Sequential() my_model.add(Conv2D(64, kernel_size=4, strides=1, activation='relu', input_shape=target_dims)) my_model.add(Conv2D(64, kernel_size=4, strides=2, activation='relu')) my_model.add(Dropout(0.5)) my_model.add(Conv2D(128, kernel_size=4, strides=1, activation='relu')) my_model.add(Conv2D(128, kernel_size=4, strides=2, activation='relu')) my_model.add(Dropout(0.5)) my_model.add(Conv2D(256, kernel_size=4, strides=1, activation='relu')) my_model.add(Conv2D(256, kernel_size=4, strides=2, activation='relu')) my_model.add(Flatten()) my_model.add(Dropout(0.5)) my_model.add(Dense(512, activation='relu')) my_model.add(Dense(n_classes, activation='softmax')) my_model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=["accuracy"]) 复制代码

模型拟合

my_model.fit_generator(train_generator, epochs=5, validation_data=val_generator) Epoch 1/5 1224/1224 [==============================] - 206s 169ms/step - loss: 1.1439 - acc: 0.6431 - val_loss: 0.5824 - val_acc: 0.8126 Epoch 2/5 1224/1224 [==============================] - 179s 146ms/step - loss: 0.2429 - acc: 0.9186 - val_loss: 0.5081 - val_acc: 0.8492 Epoch 3/5 1224/1224 [==============================] - 182s 148ms/step - loss: 0.1576 - acc: 0.9495 - val_loss: 0.5181 - val_acc: 0.8685 Epoch 4/5 1224/1224 [==============================] - 180s 147ms/step - loss: 0.1417 - acc: 0.9554 - val_loss: 0.4139 - val_acc: 0.8786 Epoch 5/5 1224/1224 [==============================] - 181s 148ms/step - loss: 0.1149 - acc: 0.9647 - val_loss: 0.4319 - val_acc: 0.8948 复制代码

关于如何赢得 Kaggle 挑战赛,你可能还喜欢:

Kaggle 首战拿银总结 | 入门指导 (长文、干货).

不可错过的人工智能必修算法手册



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3